﻿using System;
using System.Collections.Generic;
using System.Text;

namespace X86Instructions
{
    public enum X86InstMnemonic
    {
        Unknown,

        AAA,
        AAD,
        AAM,
        AAS,
        ADC,
        ADD,
        ADDPD,
        ADDPS,
        ADDSD,
        ADDSS,
        ADDSUBPD,
        ADDSUBPS,
        ADX,
        ALTER,
        AMX,
        AND,

        ANDNPD,
        ANDNPS,
        ANDPD,
        ANDPS,
        ARPL,
        BLENDPD,
        BLENDPS,
        BLENDVPD,
        BLENDVPS,
        BOUND,
        BSF,
        BSR,
        BSWAP,
        BT,

        BTC,

        BTR,

        BTS,

        CALL,

        CALLF,

        CBW,

        CWDE,
        CDQE,
        CDQ,
        CLC,
        CLD,
        CLFLUSH,
        CLI,
        CLTS,
        CMC,
        CMOVB,
        CMOVNAE,
        CMOVC,
        CMOVBE,
        CMOVNA,
        CMOVL,
        CMOVNGE,
        CMOVLE,
        CMOVNG,
        CMOVNB,
        CMOVAE,
        CMOVNC,
        CMOVNBE,
        CMOVA,
        CMOVNL,
        CMOVGE,
        CMOVNLE,
        CMOVG,
        CMOVNO,
        CMOVNP,
        CMOVPO,
        CMOVNS,
        CMOVNZ,
        CMOVNE,
        CMOV,
        CMOVP,
        CMOVPE,
        CMOVS,
        CMOVZ,
        CMOVE,
        CMP,

        CMPPD,
        CMPPS,
        CMPS,
        CMPSB,
        CMPSW,

        CMPSD,
        CMPSQ,
        CMPSS,
        CMPXCHG,
        CMPXCHG8B,
        CMPXCHG16B,
        COMISD,
        COMISS,
        CPUID,
        CRC32,
        CS,
        CVTDQ2PD,
        CVTDQ2PS,
        CVTPD2DQ,
        CVTPD2PI,
        CVTPD2PS,
        CVTPI2PD,
        CVTPI2PS,
        CVTPS2DQ,
        CVTPS2PD,
        CVTPS2PI,
        CVTSD2SI,
        CVTSD2SS,
        CVTSI2SD,
        CVTSI2SS,
        CVTSS2SD,
        CVTSS2SI,
        CVTTPD2DQ,
        CVTTPD2PI,
        CVTTPS2DQ,
        CVTTPS2PI,
        CVTTSD2SI,
        CVTTSS2SI,
        CWD,
        CQO,
        DAA,
        DAS,
        DEC,
        DIV,
        DIVPD,
        DIVPS,
        DIVSD,
        DIVSS,
        DPPD,
        DPPS,
        DS,
        EMMS,
        ENTER,
        ES,
        EXTRACTPS,
        F2XM1,
        FABS,
        FADD,
        FADDP,
        FBLD,
        FBSTP,
        FCHS,
        FCLEX,
        FCMOVB,
        FCMOVBE,
        FCMOVE,
        FCMOVNB,
        FCMOVNBE,
        FCMOVNE,
        FCMOVNU,
        FCMOVU,
        FCOM,
        FCOM2,
        FCOMI,
        FCOMIP,
        FCOMP,
        FCOMP3,

        FCOMP5,

        FCOMPP,
        FCOS,
        FDECSTP,
        FDISI,
        FDIV,
        FDIVP,
        FDIVR,
        FDIVRP,
        FENI,
        FFREE,
        FFREEP,
        FIADD,
        FICOM,
        FICOMP,
        FIDIV,
        FIDIVR,
        FILD,
        FIMUL,
        FINCSTP,
        FINIT,
        FIST,
        FISTP,
        FISTTP,
        FISUB,
        FISUBR,
        FLD,
        FLD1,
        FLDCW,
        FLDENV,
        FLDL2E,
        FLDL2T,
        FLDLG2,
        FLDLN2,
        FLDPI,
        FLDZ,
        FMUL,
        FMULP,
        FNCLEX,
        FNDISI,
        FNENI,
        FNINIT,
        FNOP,
        FNSAVE,
        FNSETPM,
        FNSTCW,
        FNSTENV,
        FNSTSW,
        FPATAN,
        FPREM,
        FPREM1,
        FPTAN,
        FRNDINT,
        FRSTOR,
        FS,
        FSAVE,
        FSCALE,
        FSETPM,
        FSIN,
        FSINCOS,
        FSQRT,
        FST,
        FSTCW,
        FSTENV,
        FSTP,
        FSTP1,

        FSTP8,
        FSTP9,
        FSTSW,
        FSUB,
        FSUBP,
        FSUBR,
        FSUBRP,
        FTST,
        FUCOM,
        FUCOMI,
        FUCOMIP,
        FUCOMP,
        FUCOMPP,
        FWAIT,
        WAIT,
        FXAM,
        FXCH,
        FXCH4,
        FXCH7,
        FXRSTOR,
        FXSAVE,
        FXTRACT,
        FYL2X,
        FYL2XP1,
        GETSEC,
        GS,
        HADDPD,
        HADDPS,
        HINT_NOP,

        HLT,
        HSUBPD,
        HSUBPS,
        IDIV,
        IMUL,

        IN,

        INC,
        INS,
        INSB,
        INSW,
        INSD,
        INSERTPS,

        INT,
        INT1,
        ICEBP,
        INTO,
        INVD,
        INVEPT,
        INVLPG,
        INVVPID,
        IRET,
        IRETD,
        IRETQ,
        JB,
        JNAE,
        JC,
        JBE,
        JNA,
        JCXZ,
        JECXZ,
        JRCXZ,
        JL,
        JNGE,
        JLE,
        JNG,
        JMP,
        JMPE,
        JMPF,
        JNB,
        JAE,
        JNC,
        JNBE,
        JA,
        JNL,
        JGE,
        JNLE,
        JG,
        JNO,
        JNP,
        JPO,
        JNS,
        JNZ,
        JNE,
        JO,
        JP,
        JPE,
        JS,
        JZ,
        JE,
        LAHF,
        LAR,
        LDDQU,
        LDMXCSR,
        LDS,
        LEA,
        LEAVE,
        LES,
        LFENCE,
        LFS,
        LGDT,
        LGS,
        LIDT,
        LLDT,
        LMSW,
        LOADALL,
        LOCK,
        LODS,
        LODSB,
        LODSW,
        LODSD,
        LODSQ,
        LOOP,
        LOOPNZ,
        LOOPNE,
        LOOPZ,
        LOOPE,
        LSL,
        LSS,
        LTR,
        MASKMOVDQU,
        MASKMOVQ,
        MAXPD,
        MAXPS,
        MAXSD,
        MAXSS,
        MFENCE,
        MINPD,
        MINPS,
        MINSD,
        MINSS,
        MONITOR,
        MOV,

        MOVAPD,
        MOVAPS,
        MOVBE,
        MOVD,
        MOVDDUP,
        MOVDQ2Q,
        MOVDQA,
        MOVDQU,
        MOVHLPS,
        MOVHPD,
        MOVHPS,
        MOVLHPS,
        MOVLPD,
        MOVLPS,
        MOVMSKPD,
        MOVMSKPS,
        MOVNTDQ,
        MOVNTDQA,
        MOVNTI,
        MOVNTPD,
        MOVNTPS,
        MOVNTQ,
        MOVQ,
        MOVQ2DQ,
        MOVS,
        MOVSB,
        MOVSW,
        MOVSD,
        MOVSQ,
        MOVSHDUP,
        MOVSLDUP,
        MOVSS,
        MOVSX,
        MOVSXD,
        MOVUPD,
        MOVUPS,
        MOVZX,
        MPSADBW,
        MUL,
        MULPD,
        MULPS,
        MULSD,
        MULSS,
        MWAIT,
        NEG,
        NOP,
        NTAKEN,
        OR,
        ORPD,
        ORPS,
        OUT,
        OUTS,
        OUTSB,
        OUTSW,
        OUTSD,
        PABSB,
        PABSD,
        PABSW,
        PACKSSDW,
        PACKSSWB,
        PACKUSDW,
        PACKUSWB,
        PADDB,
        PADDD,

        PADDQ,
        PADDSB,
        PADDSW,
        PADDUSB,
        PADDUSW,
        PADDW,
        PALIGNR,
        PAND,
        PANDN,
        PAUSE,
        PAVGB,
        PAVGW,
        PBLENDVB,
        PBLENDW,
        PCMPEQB,
        PCMPEQD,

        PCMPEQQ,
        PCMPEQW,
        PCMPESTRI,
        PCMPESTRM,
        PCMPGTB,
        PCMPGTD,
        PCMPGTQ,
        PCMPGTW,
        PCMPISTRI,
        PCMPISTRM,
        PEXTRB,
        PEXTRD,
        PEXTRQ,
        PEXTRW,
        PHADDD,
        PHADDSW,
        PHADDW,
        PHMINPOSUW,
        PHSUBD,
        PHSUBSW,
        PHSUBW,
        PINSRB,
        PINSRD,
        PINSRQ,
        PINSRW,
        PMADDUBSW,
        PMADDWD,
        PMAXSB,
        PMAXSD,
        PMAXSW,
        PMAXUB,
        PMAXUD,
        PMAXUW,
        PMINSB,
        PMINSD,
        PMINSW,
        PMINUB,
        PMINUD,
        PMINUW,
        PMOVMSKB,
        PMOVSXBD,
        PMOVSXBQ,
        PMOVSXBW,
        PMOVSXDQ,
        PMOVSXWD,
        PMOVSXWQ,
        PMOVZXBD,
        PMOVZXBQ,
        PMOVZXBW,
        PMOVZXDQ,
        PMOVZXWD,
        PMOVZXWQ,
        PMULDQ,
        PMULHRSW,
        PMULHUW,
        PMULHW,
        PMULLD,
        PMULLW,
        PMULUDQ,
        POP,

        POPA,
        POPAD,
        POPCNT,
        POPF,
        POPFQ,
        POPFD,
        POR,
        PREFETCHNTA,
        PREFETCHT0,
        PREFETCHT1,
        PREFETCHT2,
        PSADBW,
        PSHUFB,
        PSHUFD,
        PSHUFHW,
        PSHUFLW,
        PSHUFW,
        PSIGNB,
        PSIGND,
        PSIGNW,
        PSLLD,

        PSLLDQ,
        PSLLQ,

        PSLLW,

        PSRAD,

        PSRAW,

        PSRLD,

        PSRLDQ,
        PSRLQ,

        PSRLW,

        PSUBB,

        PSUBD,

        PSUBQ,

        PSUBSB,

        PSUBSW,

        PSUBUSB,

        PSUBUSW,

        PSUBW,

        PTEST,
        PUNPCKHBW,

        PUNPCKHDQ,

        PUNPCKHQDQ,
        PUNPCKHWD,

        PUNPCKLBW,

        PUNPCKLDQ,

        PUNPCKLQDQ,
        PUNPCKLWD,
        PUSH,

        PUSHA,
        PUSHAD,
        PUSHF,

        PUSHFQ,

        PXOR,
        RCL,
        RCPPS,
        RCPSS,
        RCR,
        RDMSR,
        RDPMC,
        RDTSC,
        RDTSCP,
        REP,
        REPNZ,
        REPNE,
        REPZ,
        REPE,
        RETF,
        RETN,
        REX,

        ROL,
        ROR,
        ROUNDPD,
        ROUNDPS,
        ROUNDSD,
        ROUNDSS,
        RSM,
        RSQRTPS,
        RSQRTSS,
        SAHF,

        SALC,
        SETALC,
        SAR,

        SBB,

        SCAS,
        SCASB,
        SCASW,
        SCASD,
        SCASQ,
        SETB,
        SETNAE,
        SETC,
        SETBE,
        SETNA,
        SETL,
        SETNGE,
        SETLE,
        SETNG,
        SETNB,
        SETAE,
        SETNC,
        SETNBE,
        SETA,
        SETNL,
        SETGE,
        SETNLE,
        SETG,
        SETNO,
        SETNP,
        SETPO,
        SETNS,
        SETNZ,
        SETNE,
        SETO,
        SETP,
        SETPE,
        SETS,
        SETZ,
        SETE,
        SFENCE,
        SGDT,
        SAL,
        SHL,

        SHLD,
        SHR,
        SHRD,
        SHUFPD,
        SHUFPS,
        SIDT,
        SLDT,
        SMSW,
        SQRTPD,
        SQRTPS,
        SQRTSD,
        SQRTSS,
        SS,
        STC,
        STD,
        STI,
        STMXCSR,
        STOS,
        STOSB,
        STOSW,
        STOSD,
        STOSQ,
        STR,
        SUB,
        SUBPD,
        SUBPS,
        SUBSD,
        SUBSS,
        SWAPGS,
        SYSCALL,
        SYSENTER,
        SYSEXIT,
        SYSRET,
        TAKEN,
        TEST,
        UCOMISD,
        UCOMISS,
        UD,
        UD2,
        UNPCKHPD,
        UNPCKHPS,
        UNPCKLPD,
        UNPCKLPS,
        VERR,
        VERW,
        VMCALL,
        VMCLEAR,
        VMLAUNCH,
        VMPTRLD,
        VMPTRST,
        VMREAD,
        VMRESUME,
        VMWRITE,
        VMXOFF,
        VMXON,
        WBINVD,
        WRMSR,
        XADD,
        XCHG,
        XGETBV,
        XLAT,
        XLATB,
        XOR,
        XORPD,
        XORPS,
        XRSTOR,
        XSAVE,
        XSETBV,

    }
}
